package com.cxh.service.impl;

import com.cxh.base.Data2ServiceImpl;
import com.cxh.util.DataSource;
import com.cxh.dao.SysRoleDao;
import com.cxh.dao.SysRoleMenuDao;
import com.cxh.dao.SysUserRoleDao;
import com.cxh.entity.SysRole;
import com.cxh.entity.SysRoleMenu;
import com.cxh.entity.SysUserRole;
import com.cxh.service.SysRoleService;
import com.cxh.util.CommonUtility;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 类说明：
 * @author  ChenXH
 * @date  2018-11-29 11:14:13
 */
@Service("sysRoleService")
@DataSource("dataSource2")
public class SysRoleServiceImpl extends Data2ServiceImpl<SysRole> implements SysRoleService {
    @Autowired
    private SysRoleDao dao;
    @Autowired
    private SysRoleMenuDao sysRoleMenuDao;
    @Autowired
    private SysUserRoleDao sysUserRoleDao;

    @Override
    public List<SysRole> loadPageList(Map<String, Object> map) {
       return dao.loadPageList(map);
    }

    /**
     * @类功能说明：修改角色名称，以及权限
     * @作者：Chenxh
     * @创建时间：2018年12月14日上午9:12:50
     */
    @Override
    public void updateSysRole(SysRole sysRole, Map<String, Object> jsonMap) {
    	Object rolename = jsonMap.get("rolename");
    	sysRole.setRolename(rolename.toString());
    	//修改角色名称
    	dao.updateByPrimaryKey(sysRole);
    	//删掉角色原有的权限，重新添加
    	sysRoleMenuDao.deleteByRoleId(sysRole.getId());
        //修改角色对应的权限
        SysRoleMenu sysRoleMenu = new SysRoleMenu();
        sysRoleMenu.setRoleid(sysRole.getId()+"");
        //切割菜单id
        Object menuIds = jsonMap.get("menuIds");
        if(!CommonUtility.isEmpty(menuIds)){
        	String[] menuIdsArray = menuIds.toString().substring(1).split(",");
        	for (String menuId : menuIdsArray) {
        		sysRoleMenu.setMenuid(menuId);
        		sysRoleMenuDao.addSysRoleMenu(sysRoleMenu);
			}
        }
    }
    
    /**
	 * @类功能说明：新增角色和角色的权限
	 * @作者：Chenxh
	 * @创建时间：2018年12月14日上午10:16:53
	 */
    @Override
    public void addSysRole(SysRole sysRole, Map<String, Object> jsonMap) {
    	sysRole.setRolename(jsonMap.get("rolename").toString());
    	//新增角色
    	dao.insert(sysRole);
    	//新增角色对应的权限
    	 SysRoleMenu sysRoleMenu = new SysRoleMenu();
         sysRoleMenu.setRoleid(sysRole.getId()+"");
    	//切割菜单id
        Object menuIds = jsonMap.get("menuIds");
        if(!CommonUtility.isEmpty(menuIds)){
        	String[] menuIdsArray = menuIds.toString().substring(1).split(",");
        	for (String menuId : menuIdsArray) {
        		sysRoleMenu.setMenuid(menuId);
        		sysRoleMenuDao.addSysRoleMenu(sysRoleMenu);
			}
        }
    }
    
    @Override
    public void deleteSysRole(SysRole sysRole) throws Exception {
    	//先查询此角色是否有用户在用
    	List<SysUserRole> sysUserRoleList = sysUserRoleDao.getUserByRoleId(sysRole.getId().toString());
    	//有的话不允许删除
    	if(sysUserRoleList.size() != 0){
    		throw new Exception("2");
    	}
    	//没有的话可以删除
    	dao.delete(sysRole);
    	
    }
    
}
